{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "Agent 中使用短期记忆(Memory)\n",
    "\n",
    "传统的方式\n",
    "### 以 React的模式"
   ],
   "id": "a3d845ce60f11a3b"
  },
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-08-05T12:35:04.341520Z",
     "start_time": "2025-08-05T12:34:55.554578Z"
    }
   },
   "source": [
    "from langchain_experimental.utilities import PythonREPL\n",
    "from langchain_openai import ChatOpenAI\n",
    "import dotenv\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "from langchain_core.tools import Tool\n",
    "import os\n",
    "from langchain.memory import ConversationBufferMemory\n",
    "from langchain.agents import initialize_agent, AgentType\n",
    "from numexpr import evaluate\n",
    "\n",
    "#1、提供搜索的工具\n",
    "\n",
    "os.environ[\"TAVILY_API_KEY\"] = \"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\"\n",
    "\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "search_tool = Tool(\n",
    "    name=\"search_tool\",\n",
    "    func=search.run,\n",
    "    description=\"用于互联网信息的检索\"\n",
    ")\n",
    "#1.2 提供计算的工具\n",
    "python_repl = PythonREPL()\n",
    "calculate_tool = Tool(\n",
    "    name=\"calculator\",\n",
    "    func=lambda x: str(evaluate(x)),\n",
    "    description=\"用于数学计算，当需要计算百分比数据时，务必使用此工具\"\n",
    ")\n",
    "#2、提供工具集\n",
    "tools = [search_tool, calculate_tool]\n",
    "\n",
    "#3、提供大模型\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "\n",
    "#4、提供记忆模块：ConversationBufferMemory\n",
    "memory = ConversationBufferMemory(\n",
    "    memory_key=\"chat_history\",  #表示保存聊天记录的变量名\n",
    "    return_messages=True,\n",
    "\n",
    ")\n",
    "\n",
    "#5、提供AgentExecutor:initilize_agent()\n",
    "agent_executor = initialize_agent(\n",
    "    tools=tools,\n",
    "    llm=llm,\n",
    "    #4、提供Agent\n",
    "    agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,  #使用react模式\n",
    "    verbose=True,\n",
    "    memory=memory,  #注入Memory实例\n",
    "    max_iterations=3,  #防止无限循环 ，思考- 行动 - 观察\n",
    "    handle_parsing_errors=lambda e:\"指令解析失败，请重新提问\",\n",
    ")\n",
    "\n",
    "#6，调用\n",
    "print(\"第一次提问:\")\n",
    "result1 = agent_executor.invoke({\"input\": \"怎么学习人工智能大模型\"})\n",
    "print(result1[\"output\"])\n",
    "print(\"第二次提问:\")\n",
    "result2 = agent_executor.invoke({\"input\": \"学好能做什么\"})\n",
    "print(result2[\"output\"])\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第一次提问:\n",
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? No\n",
      "AI: 学习人工智能大模型可以从以下几个方面入手：\n",
      "\n",
      "1. **基础知识**：首先，确保你对机器学习和深度学习的基本概念有一定的了解。可以通过在线课程（如Coursera、edX、Udacity等）学习相关内容。\n",
      "\n",
      "2. **数学基础**：掌握线性代数、概率论和统计学等数学基础，这些是理解机器学习算法的关键。\n",
      "\n",
      "3. **编程技能**：熟悉Python编程语言，因为大多数人工智能框架（如TensorFlow、PyTorch）都是用Python编写的。\n",
      "\n",
      "4. **学习框架**：选择一个深度学习框架进行深入学习。TensorFlow和PyTorch是目前最流行的两个框架，可以通过官方文档和教程进行学习。\n",
      "\n",
      "5. **实践项目**：通过实际项目来巩固所学知识。可以尝试实现一些经典的模型，如卷积神经网络（CNN）、循环神经网络（RNN）等。\n",
      "\n",
      "6. **阅读论文**：关注最新的研究动态，阅读相关领域的论文，尤其是关于大模型（如GPT、BERT等）的论文，以了解其架构和训练方法。\n",
      "\n",
      "7. **参与社区**：加入相关的在线社区（如Kaggle、GitHub、Reddit等），与其他学习者和专业人士交流，获取反馈和建议。\n",
      "\n",
      "8. **持续学习**：人工智能领域发展迅速，保持学习的态度，关注新技术和新方法。\n",
      "\n",
      "通过以上步骤，你可以逐步掌握人工智能大模型的相关知识和技能。祝你学习顺利！ \n",
      "```\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "学习人工智能大模型可以从以下几个方面入手：\n",
      "\n",
      "1. **基础知识**：首先，确保你对机器学习和深度学习的基本概念有一定的了解。可以通过在线课程（如Coursera、edX、Udacity等）学习相关内容。\n",
      "\n",
      "2. **数学基础**：掌握线性代数、概率论和统计学等数学基础，这些是理解机器学习算法的关键。\n",
      "\n",
      "3. **编程技能**：熟悉Python编程语言，因为大多数人工智能框架（如TensorFlow、PyTorch）都是用Python编写的。\n",
      "\n",
      "4. **学习框架**：选择一个深度学习框架进行深入学习。TensorFlow和PyTorch是目前最流行的两个框架，可以通过官方文档和教程进行学习。\n",
      "\n",
      "5. **实践项目**：通过实际项目来巩固所学知识。可以尝试实现一些经典的模型，如卷积神经网络（CNN）、循环神经网络（RNN）等。\n",
      "\n",
      "6. **阅读论文**：关注最新的研究动态，阅读相关领域的论文，尤其是关于大模型（如GPT、BERT等）的论文，以了解其架构和训练方法。\n",
      "\n",
      "7. **参与社区**：加入相关的在线社区（如Kaggle、GitHub、Reddit等），与其他学习者和专业人士交流，获取反馈和建议。\n",
      "\n",
      "8. **持续学习**：人工智能领域发展迅速，保持学习的态度，关注新技术和新方法。\n",
      "\n",
      "通过以上步骤，你可以逐步掌握人工智能大模型的相关知识和技能。祝你学习顺利！ \n",
      "```\n",
      "第二次提问:\n",
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m```\n",
      "Thought: Do I need to use a tool? No\n",
      "AI: 学好人工智能大模型可以带来许多机会和应用，具体包括：\n",
      "\n",
      "1. **职业发展**：掌握人工智能技能可以帮助你在科技、金融、医疗、教育等多个行业找到高薪职位，如数据科学家、机器学习工程师、AI研究员等。\n",
      "\n",
      "2. **创新与创业**：你可以利用人工智能技术开发新的产品和服务，推动创新，甚至创办自己的公司。\n",
      "\n",
      "3. **解决实际问题**：通过应用大模型，你可以在图像识别、自然语言处理、推荐系统等领域解决实际问题，提高工作效率和用户体验。\n",
      "\n",
      "4. **研究与学术**：如果你对学术研究感兴趣，可以在人工智能领域进行深入研究，发表论文，推动技术进步。\n",
      "\n",
      "5. **跨学科应用**：人工智能可以与其他学科结合，如生物信息学、金融科技、智能制造等，开辟新的研究和应用领域。\n",
      "\n",
      "6. **社会影响**：通过人工智能技术，你可以参与到社会问题的解决中，如环境保护、公共安全、健康管理等，产生积极的社会影响。\n",
      "\n",
      "总之，学好人工智能大模型不仅能提升个人职业竞争力，还能为社会带来积极的变化。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "学好人工智能大模型可以带来许多机会和应用，具体包括：\n",
      "\n",
      "1. **职业发展**：掌握人工智能技能可以帮助你在科技、金融、医疗、教育等多个行业找到高薪职位，如数据科学家、机器学习工程师、AI研究员等。\n",
      "\n",
      "2. **创新与创业**：你可以利用人工智能技术开发新的产品和服务，推动创新，甚至创办自己的公司。\n",
      "\n",
      "3. **解决实际问题**：通过应用大模型，你可以在图像识别、自然语言处理、推荐系统等领域解决实际问题，提高工作效率和用户体验。\n",
      "\n",
      "4. **研究与学术**：如果你对学术研究感兴趣，可以在人工智能领域进行深入研究，发表论文，推动技术进步。\n",
      "\n",
      "5. **跨学科应用**：人工智能可以与其他学科结合，如生物信息学、金融科技、智能制造等，开辟新的研究和应用领域。\n",
      "\n",
      "6. **社会影响**：通过人工智能技术，你可以参与到社会问题的解决中，如环境保护、公共安全、健康管理等，产生积极的社会影响。\n",
      "\n",
      "总之，学好人工智能大模型不仅能提升个人职业竞争力，还能为社会带来积极的变化。\n"
     ]
    }
   ],
   "execution_count": 13
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": [
    "#1、提供搜索的工具\n",
    "#2、提供工具集\n",
    "#3、提供大模型\n",
    "#4、提供记忆模块：ConversationBufferMemory\n",
    "#5、提供Agent\n",
    "#6、提供AgentExecutor\n",
    "#7、调用"
   ],
   "id": "be3f0e1c45cebf54"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 以 FUNCTION_CALL方式为例",
   "id": "db9d30c243de6d5d"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "### 通用的方式\n",
    "\n",
    "### 补充：通用方式，相较于传统方式，可以提供自定义的提示词模板\n",
    "### 说明：如果使用的是FUNCTION_CALL方式，则创建Agent时，只能使用ChatPromptTemplate\n",
    "### 如果使用的是React方式，则创建Agent时，可以使用ChatPromptTemplate、PromptTemplate"
   ],
   "id": "1fd9db7889890ac0"
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": [
    "from langchain.memory import ConversationBufferMemory\n",
    "\n",
    "# 1、提供搜索的工具\n",
    "# 2、提供工具集\n",
    "# 3、提供大模型\n",
    "# 4、提供memory\n",
    "\n",
    "#5、提供提示词模板\n",
    "# prompt_template= ChatPromptTemplate([\n",
    "# ])\n",
    "# #6、提供Agent\n",
    "# create_tool_calling_agent(\n",
    "# prompt=prompt_template,\n",
    "# llm=llm,\n",
    "# tools=tools,\n",
    "# memory=memory,\n",
    "# )\n",
    "\n",
    "#7、提供AgentExecutor\n",
    "#8、执行"
   ],
   "id": "b7990d5567413847"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-08-05T08:34:57.221167Z",
     "start_time": "2025-08-05T08:34:47.896441Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from langchain_openai import ChatOpenAI\n",
    "import dotenv\n",
    "from langchain_core.tools import Tool\n",
    "import os\n",
    "from langchain.memory import ConversationBufferMemory\n",
    "#1、提供工具\n",
    "# 1.导入相关包\n",
    "from langchain.agents import AgentExecutor, create_tool_calling_agent, create_react_agent\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "\n",
    "# 2.定义搜索化工具\n",
    "# ① 设置 TAVILY_API 密钥\n",
    "os.environ[\"TAVILY_API_KEY\"] = \"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\"  # 需要替换为你的 Tavily API 密钥\n",
    "\n",
    "# 配置工具\n",
    "search = TavilySearchResults(max_results=1)\n",
    "search_tool = Tool(\n",
    "    name=\"search_tool\",\n",
    "    func=search.run,\n",
    "    description=\"用于互联网信息的检索\"\n",
    "\n",
    ")\n",
    "#2、提供工具集\n",
    "tools = [search_tool]\n",
    "\n",
    "#3、提供大模型\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,  #表示回答更准确(减少随机性)\n",
    ")\n",
    "\n",
    "#创建Memory实例\n",
    "memory = ConversationBufferMemory(\n",
    "    memory_key=\"chat_history\",  #表示保存聊天记录的变量名\n",
    "    return_messages=True,\n",
    "\n",
    ")\n",
    "\n",
    "#5、提供提示词模板\n",
    "prompt_template = ChatPromptTemplate([\n",
    "    (\"system\", \"你是一个AI助手，能记住对话历史。当前对话记录:{chat_history}\"),\n",
    "    (\"human\", \"我的问题是：{question}\"),\n",
    "    (\"system\", \"{agent_scratchpad}\")  #必须在提示词模板中提供agent_scratchpad参数。\n",
    "])\n",
    "#6、提供Agent\n",
    "agent = create_tool_calling_agent(\n",
    "    llm=llm,\n",
    "    tools=tools,\n",
    "    prompt=prompt_template,\n",
    ")\n",
    "#7、提供AgentExecutor时注入Memory\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=tools,\n",
    "    verbose=True,  #显示详情\n",
    "    memory=memory,  #注入内存实例\n",
    "    handle_parsing_errors=True,\n",
    "    # max_iterations=3,  #防止无限循环 ，思考- 行动 - 观察\n",
    ")\n",
    "#8、执行\n",
    "print(\"第一次提问:\")\n",
    "result1 = agent_executor.invoke({\"question\": \"如何使用OpenAI API?\"})\n",
    "print(result1[\"output\"])\n",
    "print(\"第二次提问:\")\n",
    "result2 = agent_executor.invoke({\"question\": \"它支持哪些编程语言?\"})\n",
    "print(result2[\"output\"])"
   ],
   "id": "9585ad9165a968f1",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第一次提问:\n",
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m\n",
      "Invoking: `search_tool` with `如何使用OpenAI API`\n",
      "\n",
      "\n",
      "\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '快速入门| OpenAI 官方帮助文档中文版', 'url': 'https://openai.xiniushu.com/docs/quickstart', 'content': '`npm install  \\nnpm run dev`\\n\\nå\\x9c¨æµ\\x8fè§\\x88å\\x99¨ä¸\\xadæ\\x89\\x93å¼\\x80  åº\\x94è¯¥ä¼\\x9aç\\x9c\\x8bå\\x88°å® ç\\x89©å\\x90\\x8dç§°ç\\x94\\x9fæ\\x88\\x90å\\x99¨ï¼\\x81\\n\\n### ç\\x90\\x86è§£ä»£ç \\x81â\\x80\\x8b\\n\\nå\\x9c¨ `openai-quickstart-node/pages/api` æ\\x96\\x87ä»¶å¤¹ä¸\\xadæ\\x89\\x93å¼\\x80 `generate.js` ã\\x80\\x82å\\x9c¨åº\\x95é\\x83¨ï¼\\x8cæ\\x82¨ä¼\\x9aç\\x9c\\x8bå\\x88°ç\\x94\\x9fæ\\x88\\x90æ\\x88\\x91ä»¬å\\x9c¨ä¸\\x8aé\\x9d¢ä½¿ç\\x94¨ç\\x9a\\x84æ\\x8f\\x90ç¤ºè¯\\x8dï¼\\x88Promptï¼\\x89ç\\x9a\\x84å\\x87½æ\\x95°ã\\x80\\x82ç\\x94¨æ\\x88·è¾\\x93å\\x85¥å® ç\\x89©ç\\x9a\\x84ç±»å\\x9e\\x8bï¼\\x8cå®\\x83ä¼\\x9aå\\x8a¨æ\\x80\\x81è¾\\x93å\\x87ºæ\\x8c\\x87å®\\x9aå\\x8a¨ç\\x89©ç\\x9a\\x84æ\\x8f\\x90ç¤ºè¯\\x8dï¼\\x88Promptï¼\\x89ã\\x80\\x82 [...] å\\x9c¨ `generate.js` ç\\x9a\\x84ç¬¬ 9 è¡\\x8cï¼\\x8cæ\\x82¨å°\\x86ç\\x9c\\x8bå\\x88°å\\x8f\\x91é\\x80\\x81å®\\x9eé\\x99\\x85 API è¯·æ±\\x82ç\\x9a\\x84ä»£ç \\x81ã\\x80\\x82å¦\\x82ä¸\\x8aæ\\x89\\x80è¿°ï¼\\x8cå®\\x83ä½¿ç\\x94¨æ¸©åº¦ä¸º 0.6 ç\\x9a\\x84å®\\x8cæ\\x88\\x90ç«¯ç\\x82¹ã\\x80\\x82\\n\\n`generate.js`\\n`const completion = await openai.createCompletion({  \\n model: \"text-davinci-003\",  \\n prompt: generatePrompt(req.body.animal),  \\n temperature: 0.6,  \\n});`\\n\\nå°±æ\\x98¯è¿\\x99æ ·ï¼\\x81ä½ ç\\x8e°å\\x9c¨åº\\x94è¯¥å®\\x8cå\\x85¨äº\\x86è§£å® ç\\x89©å\\x90\\x8då\\xad\\x97ç\\x94\\x9fæ\\x88\\x90å\\x99¨å¦\\x82ä½\\x95ä½¿ç\\x94¨ OpenAI ç\\x9a\\x84 API äº\\x86ï¼\\x81\\n\\n## ç»\\x93è¯\\xadâ\\x80\\x8b [...] å¤\\x8då\\x88¶ä½ ç\\x9a\\x84ç§\\x98å¯\\x86 API Key å¹¶å°\\x86å\\x85¶è®¾ç½®ä¸ºæ\\x96°å\\x88\\x9bå»ºç\\x9a\\x84 `.env` æ\\x96\\x87ä»¶ä¸\\xadç\\x9a\\x84 `OPENAI_API_KEY` ã\\x80\\x82å¦\\x82æ\\x9e\\x9cä½ è¿\\x98æ²¡æ\\x9c\\x89å\\x88\\x9bå»º API Keyï¼\\x8cè¯· ç\\x82¹å\\x87»æ\\xad¤å¤\\x84å\\x8e»å\\x88\\x9bå»ºã\\x80\\x82\\n\\n`.env`\\n`OPENAI_API_KEY`\\n\\né\\x87\\x8dè¦\\x81æ\\x8f\\x90ç¤ºï¼\\x9aä½¿ç\\x94¨ Javascript æ\\x97¶ï¼\\x8cæ\\x89\\x80æ\\x9c\\x89 API è°\\x83ç\\x94¨é\\x83½åº\\x94ä»\\x85å\\x9c¨æ\\x9c\\x8då\\x8a¡å\\x99¨ç«¯è¿\\x9bè¡\\x8cï¼\\x8cå\\x9b ä¸ºå¦\\x82æ\\x9e\\x9cå\\x9c¨æµ\\x8fè§\\x88å\\x99¨ç«¯è°\\x83ç\\x94¨ï¼\\x8cæµ\\x8fè§\\x88å\\x99¨ç«¯ä»£ç \\x81ä¼\\x9aæ\\x9a´é\\x9c²ä½ ç\\x9a\\x84 API Keyã\\x80\\x82æ\\x9c\\x89å\\x85³æ\\x9b´å¤\\x9aè¯¦ç»\\x86ä¿¡æ\\x81¯ï¼\\x8cè¯·å\\x8f\\x82é\\x98\\x85æ\\xad¤å¤\\x84ã\\x80\\x82\\n\\n### è¿\\x90è¡\\x8cåº\\x94ç\\x94¨â\\x80\\x8b\\n\\nå\\x9c¨é¡¹ç\\x9b®ç\\x9b®å½\\x95ä¸\\xadè¿\\x90è¡\\x8cä»¥ä¸\\x8bå\\x91½ä»¤ä»¥å®\\x89è£\\x85ä¾\\x9dèµ\\x96é¡¹å¹¶è¿\\x90è¡\\x8cåº\\x94ç\\x94¨ã\\x80\\x82', 'score': 0.67347145}]\u001B[0m\u001B[32;1m\u001B[1;3m要使用OpenAI API，您可以参考以下步骤：\n",
      "\n",
      "1. **安装依赖**：\n",
      "   使用npm安装OpenAI的库：\n",
      "   ```bash\n",
      "   npm install\n",
      "   npm run dev\n",
      "   ```\n",
      "\n",
      "2. **设置API密钥**：\n",
      "   在您的项目根目录下创建一个`.env`文件，并添加您的API密钥：\n",
      "   ```\n",
      "   OPENAI_API_KEY=your_api_key_here\n",
      "   ```\n",
      "\n",
      "3. **编写代码**：\n",
      "   创建一个JavaScript文件（例如`generate.js`），并使用以下代码示例：\n",
      "   ```javascript\n",
      "   const completion = await openai.createCompletion({\n",
      "       model: \"text-davinci-003\",\n",
      "       prompt: generatePrompt(req.body.animal),\n",
      "       temperature: 0.6,\n",
      "   });\n",
      "   ```\n",
      "\n",
      "4. **运行项目**：\n",
      "   确保您的环境配置正确，然后运行项目以测试API调用。\n",
      "\n",
      "更多详细信息和示例代码，请访问[OpenAI官方帮助文档](https://openai.xiniushu.com/docs/quickstart)。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "要使用OpenAI API，您可以参考以下步骤：\n",
      "\n",
      "1. **安装依赖**：\n",
      "   使用npm安装OpenAI的库：\n",
      "   ```bash\n",
      "   npm install\n",
      "   npm run dev\n",
      "   ```\n",
      "\n",
      "2. **设置API密钥**：\n",
      "   在您的项目根目录下创建一个`.env`文件，并添加您的API密钥：\n",
      "   ```\n",
      "   OPENAI_API_KEY=your_api_key_here\n",
      "   ```\n",
      "\n",
      "3. **编写代码**：\n",
      "   创建一个JavaScript文件（例如`generate.js`），并使用以下代码示例：\n",
      "   ```javascript\n",
      "   const completion = await openai.createCompletion({\n",
      "       model: \"text-davinci-003\",\n",
      "       prompt: generatePrompt(req.body.animal),\n",
      "       temperature: 0.6,\n",
      "   });\n",
      "   ```\n",
      "\n",
      "4. **运行项目**：\n",
      "   确保您的环境配置正确，然后运行项目以测试API调用。\n",
      "\n",
      "更多详细信息和示例代码，请访问[OpenAI官方帮助文档](https://openai.xiniushu.com/docs/quickstart)。\n",
      "第二次提问:\n",
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3mOpenAI API 支持多种编程语言，您可以使用以下语言进行调用：\n",
      "\n",
      "1. **Python**：使用 `openai` 库。\n",
      "2. **JavaScript/Node.js**：使用 `openai` npm 包。\n",
      "3. **Java**：可以通过 HTTP 请求直接调用 API。\n",
      "4. **C#**：可以使用 HttpClient 进行 API 调用。\n",
      "5. **Ruby**：可以使用 `httparty` 或 `rest-client` 等库。\n",
      "6. **PHP**：可以使用 cURL 或 Guzzle 进行 API 调用。\n",
      "7. **Go**：可以使用 `net/http` 包进行 API 调用。\n",
      "\n",
      "此外，您还可以使用任何支持 HTTP 请求的编程语言来访问 OpenAI API。只需构建适当的请求并处理响应即可。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "OpenAI API 支持多种编程语言，您可以使用以下语言进行调用：\n",
      "\n",
      "1. **Python**：使用 `openai` 库。\n",
      "2. **JavaScript/Node.js**：使用 `openai` npm 包。\n",
      "3. **Java**：可以通过 HTTP 请求直接调用 API。\n",
      "4. **C#**：可以使用 HttpClient 进行 API 调用。\n",
      "5. **Ruby**：可以使用 `httparty` 或 `rest-client` 等库。\n",
      "6. **PHP**：可以使用 cURL 或 Guzzle 进行 API 调用。\n",
      "7. **Go**：可以使用 `net/http` 包进行 API 调用。\n",
      "\n",
      "此外，您还可以使用任何支持 HTTP 请求的编程语言来访问 OpenAI API。只需构建适当的请求并处理响应即可。\n"
     ]
    }
   ],
   "execution_count": 5
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
